package a11_GeneticClass;

/**
 * @Author quan
 * @Description 知识点4：泛型数组的使用
 * @Date 2023/3/4 12:17
 */
public class GArrayUse<T> {
    //特点1：只能声明泛型数组，不能创建
//    T[] arr;//可以声明
//    T[] arr = new T[10];//报错：不能创建

    //特点2：要使用泛型数组，要使用Object类型的数组
    Object[] arr = new Object[10];//创建Object类型的数组
    int i;
    public void add(T t){// 在使用这个数组时，增删查改，使用方法来操作，方法使用类型参数~
        arr[i] = t;
        i++;
    }
    public void add1(Object obj){//对比： 在使用这个数组时，增删查改，使用方法来操作，方法使用Object类型~
        arr[i] = obj;
        i++;
    }

    public T getArr(int index) {
        return (T) arr[index];
    }

    public Object getArr1(int index) {
        return arr[index];
    }

    public static void main(String[] args) {
        GArrayUse<Integer> gArrayUse = new GArrayUse<>();//泛型类实例化时确定参数类型Integer
        //--------------对比add和add1的区别----------
        //--------------对比add：参数类型是泛型----------
        gArrayUse.add(11);//只能传入整数类型
        gArrayUse.add(18);
        int res1 = gArrayUse.getArr(0);//不需要类型转换，直接获取
        System.out.println(res1);
        //------------add1:Object类型的参数:需要类型的强转-------------
        gArrayUse.add1(12);
        int res2 = (int)gArrayUse.getArr1(0);
        System.out.println(res2);
    }
}
